<?php
namespace app\api\controller;
use think\Controller;
use think\Db;
use think\Request;
use app\api\model\Production;
class Works extends Controller
{
    /**
     * 作品列表接口
     * 接口地址:http://localhost/zyd/public/index.php/api/works/list_1
     * 请求方式：get/post
     * 请求示例：http://localhost/zyd/public/index.php/api/works/list_1?page=2
     * 请求参数：
     * 名称 必填 
     * page  否 默认为第一页
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     * data    文章信息
     */
    public function list_1($page = '')
    {
        
        $page = $page? $page : 1;
        $data = Db::name('production')->limit(10)->page($page)->select();
        if($data)
        {
            return json(['code'=>1,'message'=>'加载成功','data'=>$data]);
        }
        else
        {
            return json(['code'=>0,'message'=>'没有数据啦','data'=>$data]);
        }
    }
    
    /**
     * 作品详情接口
     * 接口地址:http://localhost/zyd/public/index.php/api/works/details
     * 请求方式：get/post
     * 请求示例：http://localhost/zyd/public/index.php/api/works/details?p_id=1
     * 请求参数：
     * 名称          必填 
     * p_id           是
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     * data    文章信息
     */
    public function details($p_id)
    {
        $data = Production::with('user,img,comment.zhuiping')->where('p_id',$p_id)->select();
        // $data = Db::name('production a')
        //         ->where('p_id',$p_id)
        //         ->join('user u','a.u_id = u.u_id')
        //         ->join('img z','a.p_id = z.p_id')
                
        //         ->select();
        if($data)
        {
            return json(['code'=>1,'message'=>'加载成功','data'=>$data]);
        }
        else
        {
            return json(['code'=>0,'message'=>'没有数据啦','data'=>$data]);
        }
    }
    /**
     * 提交作品接口
     * 接口地址:http://localhost/zyd/public/index.php/api/works/add
     * 请求方式：get/post
     * 请求示例：http://localhost/zyd/public/index.php/api/works/add
     * 请求参数：
     * 名称            必填   说明
     * title            是      标题      
     * introductory     是      简介
     * u_id             是      用户id
     * p_type           是      文章类型（如：技巧）
     * pic[]              是      多图pic应该为数组
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
      */
    public function add()
    {
        $post = request()->param();
        $request = Request::instance();
        $data=[
            'title'=>$post['title'],
            'u_id'=>$post['u_id'],
            'view'=>0,
            'comment'=>0,
            'likecount'=>0,
            'introductory'=>$post['introductory'],
            'p_type'=>$post['p_type'],
            'time' =>date("Y-m-d h:i:s"),
        ];
        $p_id = Db::table('production')->insertGetId($data);
        $files = request()->file('pic');
        foreach ($files as $file) 
        {
            $look = $file->rule('uniqid')->validate(['size' => 5242880, 'ext' => 'jpg,jpeg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'static' . DS .'img');
            if ($look) {
                $pic = $look->getFilename();
                $http = $request->domain();
                $src = "$http/zyd/public/static/img/$pic";
                $img = [
                    'p_id'=>$p_id,
                    'pic'=>$src,
                ];
                Db::table('img')->insertGetId($img);
            }
        }
        $hd = Db::table('production')->where('p_id',$p_id)->update(['pic' =>$src]);
        if($hd)
            {
                return json(['code'=>1,'message'=>'发布成功']);
            }
            else{
                return json(['code'=>0,'message'=>'失败']);
            }
    }
    /**
     * 搜索作品列表接口
     * 接口地址:http://localhost/zyd/public/index.php/api/works/search
     * 请求方式：get/post
     * 请求示例：http://localhost/zyd/public/index.php/api/works/search?page=2
     * 请求参数：
     * 名称 必填 
     * page  否 默认为第一页
     * name  是  搜索关键字
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     * data    文章信息
     */
    public function search($page = '',$name)
    {
        
        $page = $page? $page : 1;
        $data = Db::name('production')->where('title','like',"%{$name}%")->limit(10)->page($page)->select();
        if($data)
        {
            return json(['code'=>1,'message'=>'加载成功','data'=>$data]);
        }
        else
        {
            return json(['code'=>0,'message'=>'没有数据啦','data'=>$data]);
        }
    }
    /**
     * 收藏作品接口
     * 接口地址:http://localhost/zyd/public/index.php/api/works/p_collect
     * 请求方式：post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/a_collect
     * 请求参数：
     * 名称          必填 
     * p_id           是
     * u_id           是
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     */
    public function p_collect($p_id,$u_id)
    {
        // $count = Db::name('production')->where('p_id',$p_id)->find();
        // $newcount = $count['collect']+1;
        // Db::table('production')->where('p_id',$p_id)->update(['collect' => $newcount]);
        $data = [
            'p_id' =>$p_id,
            'u_id' =>$u_id
        ];
        $res1 = Db::name('pcollect')->where($data)->find();
        if($res1)
        {
            $sc = Db::table('pcollect')->delete($res1['pcollect_id']);
            if($sc)
            {
                return json(['code'=>1,'message'=>'成功']);
            }
            else
            {
                return json(['code'=>0,'message'=>'失败']);
            }
        }
        $res = Db::name('pcollect')->insertGetId($data);
        if($data)
        {
            return json(['code'=>1,'message'=>'收藏成功']);
        }
        else
        {
            return json(['code'=>0,'message'=>'收藏失败']);
        }
    }
    /**
     * 点赞作品接口
     * 接口地址:http://localhost/zyd/public/index.php/api/works/p_like
     * 请求方式：post
     * 请求示例：http://localhost/zyd/public/index.php/api/works/p_like?p_id=1&u_id=1
     * 请求参数：
     * 名称          必填 
     * a_id           是
     * u_id           是
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     */
    public function p_like($p_id,$u_id)
    {
        $count = Db::name('production')->where('p_id',$p_id)->find();
        $newcount = $count['likecount']+1;
        Db::table('production')->where('p_id',$p_id)->update(['likecount' => $newcount]);
        $data = [
            'p_id' =>$p_id,
            'u_id' =>$u_id
        ];
        $res1 = Db::name('plike')->where($data)->find();
        if($res1)
        {
            $sc = Db::table('plike')->delete($res1['plike_id']);
            if($sc)
            {
                return json(['code'=>1,'message'=>'成功']);
            }
            else
            {
                return json(['code'=>0,'message'=>'失败']);
            }
        }
        $res = Db::name('plike')->insertGetId($data);
        if($data)
        {
            return json(['code'=>1,'message'=>'点赞成功']);
        }
        else
        {
            return json(['code'=>0,'message'=>'点赞失败']);
        }
    }
    /**
     * 评论作品接口
     * 接口地址:http://localhost/zyd/public/index.php/api/works/comment
     * 请求方式：post
     * 请求示例：http://localhost/zyd/public/index.php/api/works/comment?p_id=1&u_id=1&comment=嘻嘻
     * 请求参数：
     * 名称          必填 
     * p_id           是
     * u_id           是
     * comment        是
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     */
    public function comment()
    {
        $post = request()->param();
        $res = Db::name('user')->where('u_id',$post['u_id'])->find();
        $data = [
            'p_id' =>$post['p_id'],
            'u_id' =>$post['u_id'],
            'comment' =>$post['comment'],
            'name' =>$res['name'],
            'headpic' =>$res['headpic'],
            'time' =>date("Y-m-d h:i:s"),
        ];
        $res = Db::name('pcomment')->insertGetId($data);
        if($data)
        {
            return json(['code'=>1,'message'=>'评论成功']);
        }
        else
        {
            return json(['code'=>0,'message'=>'失败']);
        }
    }
    /**
     * 追加评论作品接口
     * 接口地址:http://localhost/zyd/public/index.php/api/works/ppcomment
     * 请求方式：post
     * 请求示例：http://localhost/zyd/public/index.php/api/works/ppcomment?pcomment_id=1&u_id=1&comment=垃圾
     * 请求参数：
     * 名称          必填 
     * pcomment_id    是  评论id
     * u_id           是   追加评论人
     * comment        是   评论内容
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     */
    public function ppcomment()
    {
        $post = request()->param();
        $res = Db::name('user')->where('u_id',$post['u_id'])->find();
        $data = [
            'pcomment_id' =>$post['pcomment_id'],
            'u_id' =>$post['u_id'],
            'comment' =>$post['comment'],
            'name' =>$res['name'],
            'headpic' =>$res['headpic'],
            'time' =>date("Y-m-d h:i:s"),
        ];
        $res = Db::name('ppcomment')->insertGetId($data);
        if($data)
        {
            return json(['code'=>1,'message'=>'评论成功']);
        }
        else
        {
            return json(['code'=>0,'message'=>'失败']);
        }
    }
    /**
     * 点赞收藏关注作品判断接口
     * 接口地址:http://localhost/zyd/public/index.php/api/works/judge
     * 请求方式：post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/judge?u_id=1&a_id=1
     * 请求参数：
     * 名称          必填 
     * a_id           是
     * u_id           是
    * 返回参数说明
     * 名称  说明
     * dianzan   0已经点赞，1未点赞
     * shoucang  0已经收藏，1未收藏
     */
    public function judge()
    {
        $post = request()->param(); 
        $data = [
            'p_id' =>$post['p_id'],
            'u_id' =>$post['u_id'],
        ];
        $res1 = Db::name('plike')->where($data)->find();
        //已经点赞
        if($res1)
        {
            $dianzan =0;
        }
        else
        {
            $dianzan =1;
        }
        $res2 = Db::name('pcollect')->where($data)->find();
        //已经点赞
        if($res2)
        {
            $shoucang =0;
        }
        else
        {
            $shoucang =1;
        }
        return json(['dianzan'=>$dianzan,'shoucang'=>$shoucang]);
    }
}
